# What is an Agora? An [Agora](https://anagora.org/wiki/Agora) is a distributed, goal-oriented social network operating on a cooperatively built and maintained knowledge graph. The implementation you are currently looking at tries to assemble such a graph out of a collection of [digital gardens](flancia.org/go/garden), but other data sources are coming. The reference [[Agora of Flancia]] should be live at https://anagora.org. # Architecture This Agora's architecture has several components distributed over three git repositories: - The *Agora root repository*, which you are browsing: . - This root repository contains a high level definition of the Agora as expressed by the list of digital gardens to be integrated (`sources.yaml`) and the contract agreed upon by the community (`CONTRACT.md`). - The *Agora Server*: . - Which contains a reference Python / Flask web app that integrates and serves content. - The *Agora Bridge*: . - Which contains a set of processes to retrieve content as volunteered by users. # To run To run an Agora: - Clone all three repositories described above (ideally in the $HOME directory of a dedicated user; this is not strictly needed, but scripts might assume this). - Install Python requirements in each of `agora-server` and `agora-bridge` using pip or (recommended) [[poetry]]. - In `agora-bridge`: run `./run-dev.sh` to start updating repositories defined in `sources.yaml`. - In `agora-server`: run `./run-dev.sh` to start the dev web interface; or refer to for instructions on how to set up the Agora as a system service on top of uwsgi (see `prod.ini`) and nginx. Of course you are also free to run your own Agora! To do this, just run the bridge against a local `sources.yaml` file -- or fork the root repository and adjust as wished. As usual please reach out if you need a hand with anything :) # To join Please see [[README]]. # For more information See the [[Agora Chapter]] in the [[PKG Book]].